本文同步刊登於 k2r2bai.com Blog。
在 Kubernetes 的快速發展下,每隔三個月左右,我們就會看到新版本的推出,以及舊版本進入 EOL(End of Life) 狀態,這時一但想要嘗試新功能與特性,或者是由於安全漏洞關析需要進行補丁時,就必須面對升級 Kubernetes 叢集元件問題。但是若在生產環境中,隨意升級 Kubernetes 叢集元件會不會發生什麼問題?
是的,若對於 Kubernetes 不熟悉的話,很容易掉入陷阱,比如說:已被棄用的 API、不相容的 Add-ons 版本、已棄用的元件參數、不正確的升級方式等等,這些都是有可能在升級後,導致 Kubernetes 叢集功能無法正常工作的原因。
而今天就是要來跟大家分享一下,如何更安全地升級 Kubernetes 叢集,並且遇到問題時,該如何避免與解決。在開始前,我們先來了解一座 Kubernetes 叢集要更新時,需要關注哪些元件。
為了預防在更新 Kubernetes 叢集時發生問題,因此不需先注意幾件事情,以確保升級順利。
備份 etcd 資料
。因為 etcd 儲存 Kubernetes 叢集的狀態,若發生不一致時,將會影響叢集運行。這邊可以透過以下工具來完成。
叢集更新時,務必以一個次要版本(Minor)
為間隔進行。
閱讀 Release Notes 來了解每個版本的變化。
善用工具
或公有雲服務
來完成叢集更新過程。
公有雲通常提供了更新機制,這也是公有雲 Kubernetes 服務的優勢之一,因為自建的環境往往很容易因為更新發生問題。
目標版本 API 變化
。
確保應用程式使用進階或穩定的 API 建置實例,如 Deployment。
更新 Node 以前,優先更新 Master。
今天簡單的分享了升級 Kubernetes 叢集時,需要優先了解的知識,目的是希望幫助正在煩惱升級的人,能夠更有信心的執行。這邊在總結一下更新叢集前、更新叢集中與更新叢集後需要瞭解的事情。
kubectl drain <node>
將節點設定為維運模式。當有了基本的叢集更新知識後,明天我們將實際實踐更新一座叢集的過程。